<?php

require_once 'Ayudante.php';
require_once 'Conductor.php';
require_once 'Nino.php';

/**
 *
 * Coche Escolar
 */
class CocheEscolar
{

    /**
     * Contiene la matricula del coche
     *
     * @var string
     */
    private $_matricula;

    /**
     *
     * @var string
     */
    private $_barrio;

    /**
     *
     * @var array
     */
    private $_colNiños = array();

    /**
     *
     * @var Conductor
     */
    private $_conductor;

    /**
     *
     * @var Ayudante
     */
    private $_ayudante;

    /**
     * OPCIONAL: no necesariamente este requerimiento tiene o puede ser
     * una restricción en el código, todo dependerá del contexto del problema
     *  (aquí se agrega como un ejemplo de implementación)
     */
    const LIMITE_OCUPANTES = 5;

    /**
     *
     * @param Conductor $conductor
     * @param Ayudante $ayudante
     * @param string $barrio
     */
    public function __construct($matricula, $barrio)
    {
        $this->_matricula = $matricula;
        $this->_barrio = $barrio;
    }

    /**
     *
     * @return string
     */
    public function getMatricula()
    {
        return $this->_matricula;
    }

    /**
     *
     * @param Conductor $conductor
     */
    public function setConductor(Conductor $conductor)
    {
        $this->_conductor = $conductor;
    }

    /**
     *
     * @param Ayudante $ayudante
     */
    public function setAyudante(Ayudante $ayudante)
    {
        $this->_ayudante = $ayudante;
    }

    /**
     *
     * @return array
     */
    public function getNiños()
    {
        return $this->_colNiños;
    }

    /**
     *
     * @param Niño $niño
     */
    public function addNiño(Niño $niño)
    {
        if (count($this->_colNiños) < self::LIMITE_OCUPANTES) {
            $this->_colNiños[] = $niño;
        }
    }

    /**
     *
     * @param string $nombre_niño
     * @return Niño
     */
    public function buscarNiño($nombre_niño)
    {
        $niñoEncontrado = null;

        foreach ($this->_colNiños as $niño) {
            if ($niño->getNombre() == $nombre_niño) {
                $niñoEncontrado = $niño;
            }
        }

        return $niñoEncontrado;
    }

    public function __toString()
    {
        return $this->_matricula;
    }

}